/** \file Mixer.h
    \author belot.nicolas
    An interface for Mixer.
	
*/


#ifndef MIXER_H
#define MIXER_H 1
#include "Buffer.h"
namespace libtrckr {
class Mixer {
/** \class libtrckr::Mixer	
\brief an interface for Mixer
*/
	public:
	/** Destructor*/
	virtual ~Mixer();
	/// \return the numbers of track;
	virtual uint tracks() const=0;//Number of tracks we mix
	/// set the number of track
	virtual void tracks(uint)=0;
	/// \return the size of the mixer
	virtual uint length() const=0;//length of the Mixer 
	/// set the size of the mixer
	virtual void length(uint)=0;
	/** Append the buffer in the mixer
	\param b The buffer.
	\param track num of tracks
	\param left panning from left (100%) 
	\param volume gain/reduce of the track
	*/
	virtual void Append(Buffer&, uint, uint,int)=0;//append the buffer, track, % left
	/** returns the mixed data
	\return a buffer containing mixed data...*/
	virtual Buffer Mixed()=0;//return mixed data

};

}





#endif

